/**
 * 工作流模板 API
 */
import request from './request'

// ============ 模板 CRUD 接口 ============

/**
 * 创建工作流模板
 * @param {Object} data - 模板数据
 */
export function createWorkflowTemplate(data) {
  return request({
    url: '/workflow-templates',
    method: 'post',
    data
  })
}

/**
 * 查询工作流模板列表
 * @param {Object} params - 查询参数
 */
export function getWorkflowTemplateList(params) {
  return request({
    url: '/workflow-templates',
    method: 'get',
    params
  })
}

/**
 * 查询工作流模板详情
 * @param {Number} templateId - 模板ID
 */
export function getWorkflowTemplateDetail(templateId) {
  return request({
    url: `/workflow-templates/${templateId}`,
    method: 'get'
  })
}

/**
 * 更新工作流模板（创建新版本）
 * @param {Number} templateId - 模板ID
 * @param {Object} data - 更新数据
 */
export function updateWorkflowTemplate(templateId, data) {
  return request({
    url: `/workflow-templates/${templateId}`,
    method: 'put',
    data
  })
}

/**
 * 删除工作流模板
 * @param {Number} templateId - 模板ID
 */
export function deleteWorkflowTemplate(templateId) {
  return request({
    url: `/workflow-templates/${templateId}`,
    method: 'delete'
  })
}

// ============ 版本管理接口 ============

/**
 * 查询模板版本历史
 * @param {Number} templateId - 模板ID
 */
export function getVersionHistory(templateId) {
  return request({
    url: `/workflow-templates/${templateId}/versions`,
    method: 'get'
  })
}

/**
 * 查询指定版本详情
 * @param {Number} templateId - 模板ID
 * @param {Number} version - 版本号
 */
export function getVersionDetail(templateId, version) {
  return request({
    url: `/workflow-templates/${templateId}/versions/${version}`,
    method: 'get'
  })
}

/**
 * 版本对比
 * @param {Number} templateId - 模板ID
 * @param {Number} version1 - 版本号1
 * @param {Number} version2 - 版本号2
 */
export function getVersionDiff(templateId, version1, version2) {
  return request({
    url: `/workflow-templates/${templateId}/diff`,
    method: 'get',
    params: { version1, version2 }
  })
}

/**
 * 回滚到指定版本
 * @param {Number} templateId - 模板ID
 * @param {Object} data - { target_version: 版本号 }
 */
export function rollbackToVersion(templateId, data) {
  return request({
    url: `/workflow-templates/${templateId}/rollback`,
    method: 'post',
    data
  })
}

// ============ 工作流实例扩展接口 ============

/**
 * 从模板创建实例
 * @param {Object} data - 创建参数
 */
export function createInstanceFromTemplate(data) {
  return request({
    url: '/workflow-instances/from-template',
    method: 'post',
    data
  })
}

/**
 * 复制实例
 * @param {Number} instanceId - 实例ID
 * @param {Object} data - 复制参数
 */
export function duplicateInstance(instanceId, data) {
  return request({
    url: `/workflow-instances/${instanceId}/duplicate`,
    method: 'post',
    data
  })
}

/**
 * 实例另存为模板
 * @param {Number} instanceId - 实例ID
 * @param {Object} data - { template_name, description, created_by }
 */
export function saveInstanceAsTemplate(instanceId, data) {
  return request({
    url: `/workflow-instances/${instanceId}/save-as-template`,
    method: 'post',
    data
  })
}

/**
 * 更新实例的定时调度
 * @param {Number} instanceId - 实例ID
 * @param {Object} data - { cron_expression, cron_enabled }
 */
export function updateInstanceSchedule(instanceId, data) {
  return request({
    url: `/workflow-instances/${instanceId}/schedule`,
    method: 'put',
    data
  })
}

/**
 * 启动未运行的实例
 * @param {Number} instanceId - 实例ID
 */
export function startInstance(instanceId) {
  return request({
    url: `/workflow-instances/${instanceId}/start`,
    method: 'post'
  })
}

/**
 * 查询未运行的实例列表
 * @param {Object} params - { page, page_size }
 */
export function getNotStartedInstances(params) {
  return request({
    url: '/workflow-instances/not-started',
    method: 'get',
    params
  })
}
